using CodeSaude.Domain.Entities;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace CodeSaude.Infrastructure.Data.EntityConfig
{
    public class configuracaoMap : EntityTypeConfiguration<configuracao>
    {
        public configuracaoMap()
        {
            // Primary Key
            this.HasKey(t => t.id_configuracao);

            // Properties
            this.Property(t => t.id_configuracao)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(t => t.nome_cliente)
                .IsRequired()
                .HasMaxLength(100);

            this.Property(t => t.sigla_cliente)
                .HasMaxLength(20);

            this.Property(t => t.logo_cliente)
                .HasMaxLength(255);

            this.Property(t => t.imagem01_cliente)
                .HasMaxLength(255);

            this.Property(t => t.imagem02_cliente)
                .HasMaxLength(255);

            this.Property(t => t.imagem03_cliente)
                .HasMaxLength(255);

            this.Property(t => t.imagem04_cliente)
                .HasMaxLength(255);

            this.Property(t => t.cidade_padrao)
                .HasMaxLength(255);

            this.Property(t => t.estado_padrao)
                .HasMaxLength(2);

            this.Property(t => t.centro_custo_sge)
                .HasMaxLength(45);

            this.Property(t => t.versao_sistema)
                .HasMaxLength(20);

            this.Property(t => t.ambiente_sistema)
                .HasMaxLength(40);

            this.Property(t => t.cnes)
                .HasMaxLength(50);

            // Table & Column Mappings
            this.ToTable("configuracao");
            this.Property(t => t.id_configuracao).HasColumnName("id_configuracao");
            this.Property(t => t.nome_cliente).HasColumnName("nome_cliente");
            this.Property(t => t.sigla_cliente).HasColumnName("sigla_cliente");
            this.Property(t => t.logo_cliente).HasColumnName("logo_cliente");
            this.Property(t => t.imagem01_cliente).HasColumnName("imagem01_cliente");
            this.Property(t => t.imagem02_cliente).HasColumnName("imagem02_cliente");
            this.Property(t => t.imagem03_cliente).HasColumnName("imagem03_cliente");
            this.Property(t => t.imagem04_cliente).HasColumnName("imagem04_cliente");
            this.Property(t => t.cidade_padrao).HasColumnName("cidade_padrao");
            this.Property(t => t.estado_padrao).HasColumnName("estado_padrao");
            this.Property(t => t.centro_custo_sge).HasColumnName("centro_custo_sge");
            this.Property(t => t.versao_sistema).HasColumnName("versao_sistema");
            this.Property(t => t.ambiente_sistema).HasColumnName("ambiente_sistema");
            this.Property(t => t.quantidade_leito).HasColumnName("quantidade_leito");
            this.Property(t => t.envio_bioslab).HasColumnName("envio_bioslab");
            this.Property(t => t.cnes).HasColumnName("cnes");
        }
    }
}
